草庐IT

php - 单例继承

全部标签

c# - 是否有可能在代码中丢失过度继承?

我目前正在开发一个由其他人完成的asp.net站点,它的功能复杂得可笑……嗯,我是这么认为的!几乎每个类都继承自另一个类,然后是另一个类,然后是另一个类,依此类推......你必须平均达到8/10级才能获得基类,有时甚至更多!这些类内部还有其他类,它们遵循与Uber继承相同的模式。这让我多次迷失在代码中,结果天知道在visualstudio上打开了多少个标签页。这是好的/正常的做法还是不好的做法?我觉得这是一种不好的做法,因为过度使用继承导致代码变得不可扩展,如此简单的事情变得过于复杂......但我可能是错的:)谢谢! 最佳答案

c# - 如何获取基类的所有继承类?

这个问题在这里已经有了答案:HowtofindallthetypesinanAssemblythatInheritfromaSpecificTypeC#(4个答案)Getallderivedtypesofatype(8个答案)关闭9年前。classFoo{}classFoo1:Foo{}classFoo2:Foo{}我怎样才能获得所有使用Foo作为基类的类?继承的类在同一个程序集中不是必需的。

c# - 只查找非继承接口(interface)?

我试图通过反射对类的接口(interface)执行查询,但是方法Type.GetInterfaces()也返回所有继承的接口(interface)。等等publicclassTest:ITest{}publicinterfaceITest:ITesting{}代码typeof(Test).GetInterfaces();将返回一个包含ITest和ITesting的Type[],因为我只想要ITest,是否有另一种方法允许您指定继承?谢谢,亚历克斯。编辑:从下面的答案中我收集到了这一点,Typet;t.GetInterfaces().Where(i=>!t.GetInterfaces()

c# - 抽象类和接口(interface)的多重继承

我用C#.NET写了下面的代码publicinterfaceIWork{voidfunc();}publicabstractclassWorkClass{publicvoidfunc(){Console.WriteLine("CallingAbstractClassFunction");}}publicclassMyClass:WorkClass,IWork{}编译时,我没有收到任何错误。编译器没有强制我实现方法“func();”在派生自接口(interface)“IWork”的“MyClass”中。之后,我可以优雅地创建类“MyClass”的实例并调用函数“func()”。为什么编译

c# - .NET XML 序列化和继承

我有这样的结构:publicinterfaceA{publicvoidmethod();}publicclassB:A{}publicclassC:A{}Listlist;List包含类型B和C的对象,它们也有一些我想保留的字段,我现在可以序列化它,反序列化回来并获得正确的对象实例吗?最好是XML编辑:有什么简单的方法可以序列化这个包含接口(interface)的列表,然后反序列化回B和C实例吗? 最佳答案 假设您正在使用内置的.netXML序列化,您应该查看以下属性:System.Xml.Serialization.XmlIncl

c# - CaSTLe Windsor - 我是否必须释放单例或非一次性 transient 对象?

Castlewiki在几个地方说我应该总是为通过容器解析的组件调用container.Release()。这对于复杂的生活方式管理技术(例如LifeStyle.Pooled)或使用专门设施时显然是有意义的......但我真的必须释放单例(它在容器被处理之前一直存在)和非一次性transient对象吗?如果我逐步执行对transient对象或单例的Release()调用,这些调用似乎多余的-例如在transient对象未实现IDisposable的情况下,内核只是注意到它没有跟踪对象并返回...似乎有一个“组件负担”的概念来跟踪对解析transient对象时可能构造的其他一次性组件的“间

c# - DataGridView 锁定在继承的 UserControl 上

我有一个带有一些预定义控件(groupbox、button、datagridview)的UserControl,这些控件被标记为protected,组件变量也被标记为protected。然后我想从这个基本UserControl继承到另一个UserControl,但是DataGridView始终锁定在设计器中。我怀疑它可能与实现ISupportInitilize的DataGridView有关。publicclassBaseGridDetail:UserControl定义了DataGridView控件(等)。publicclassInheritedDetail:BaseGridDetail

c# - 是否可以在接口(interface)中包装 C# 单例?

我目前有一个类,其中我只有静态成员和常量,但是我想用包装在接口(interface)中的单例替换它。但是我该如何做到这一点,记住我见过的每个单例实现都有一个静态实例方法,从而违反了接口(interface)规则? 最佳答案 要考虑的一个解决方案(而不是自己动手)是利用IoC容器,例如Unity.IoC容器通常支持针对接口(interface)注册实例。这提供了您的单例行为,因为根据接口(interface)解析的客户端将收到单例。//Registerinstanceatsomestartingpointinyourapplicati

c# - 我们可以继承单例类吗?

我们可以继承单例类吗? 最佳答案 这取决于实现。单例通常具有私有(private)构造函数并且可能标记为sealed,如果是这样则不能。如果它至少受到保护,你可以。如果你只是从单例类继承,结果将不是单例,所以你应该遵循这个模式,让它也是单例。 关于c#-我们可以继承单例类吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3564758/

c# - 单元测试单例

我有一个包含对统计对象的引用的单例。当我在使用该单例的程序上运行几个单元测试时-测试之间保持的值。我虽然在执行Program.Main()时它会在单元测试之间重新开始,但不知何故它会记住上次测试的结果。我如何编写相互隔离的单元测试(我不想要clean()函数-我希望它从新的“一切”开始), 最佳答案 简短版本:不要把你的单例写成单例。将它们编写为普通类,并通过控制反转容器调用它们,您已将类配置为单例。这样,您就可以很好地对类进行单元测试,如果您今天或明天决定单例不是该类的正确生活方式,只需修改IoC容器的配置即可。